#ifndef __BSP_WTN6_H
#define __BSP_WTN6_H

#include "debug.h"

// 16级音频命令
#define CMD_VOLUME_LEVEL1			0xE0
#define CMD_VOLUME_LEVEL2			0xE1
#define CMD_VOLUME_LEVEL3			0xE2
#define CMD_VOLUME_LEVEL4			0xE3
#define CMD_VOLUME_LEVEL5			0xE4
#define CMD_VOLUME_LEVEL6			0xE5
#define CMD_VOLUME_LEVEL7			0xE6
#define CMD_VOLUME_LEVEL8			0xE7
#define CMD_VOLUME_LEVEL9			0xE8
#define CMD_VOLUME_LEVEL10		0xE9
#define CMD_VOLUME_LEVEL11		0xEA
#define CMD_VOLUME_LEVEL12		0xEB
#define CMD_VOLUME_LEVEL13		0xEC
#define CMD_VOLUME_LEVEL14		0xED
#define CMD_VOLUME_LEVEL15		0xEE
#define CMD_VOLUME_LEVEL16		0xEF

#define CMD_LOOP							0xF2   // 循环播放命令，执行此命令可循环播放当前段语音，可在语音播放/语音停止时发送。如果有 FEH 命令，或者播放另外一段语音，F2H 命令无效；需先发播放指令，再发循环播放指令
#define CMD_CONTINUE					0xF3   // 连码播放命令，F3H+语音地址 A，F3H+语音地址 B，F3H+语音地址 C，… 在播放地址 A的时候，收到后面的码不打断，播放完 A，就播放 B，然后播放 C…
#define CMD_DELAY							0xF8   // 插入静音命令，F8H+静音时间（10MS 为单位），播放完一个地址之后插入静音
#define CMD_STOP							0xFE   // 执行此命令可停止播放当前段语音



// 通信端口定义
#define WTN_RCC				RCC_APB2Periph_GPIOB
#define WTN_PORT  		GPIOB
#define WTN_BUSY_PIN	GPIO_Pin_3
#define WTN_CLK_PIN		GPIO_Pin_4
#define WTN_DATA_PIN	GPIO_Pin_5

// 端口操作定义
#define WTN_BUSY			PBout(3)
#define WTN_CLK				PBout(4)
#define WTN_DATA			PBout(5)


void WTN6_Init(void);

void WTN6_AddDelay10Ms(uint8_t t);
void WTN6_SetVolume(uint8_t level);
void WTN6_Loop(void);
void WTN6_WriteOneAudio(uint8_t audio);
void WTN6_insertOneAudio(uint8_t audio);
void WTN6_WriteMultipleAudio(uint8_t len, uint8_t *audioBuf);

// 应用层调用接口
void WTN6_TellTimeByHour(int8_t t, bool zhengFlag);
void WTN6_TellMeasurementRemind(int8_t hh,int8_t mm);
void WTN6_PutBackRemind(void);
void WTN6_PowerOn(void);
#endif
